SlideShare a Scribd company logo
1 of 92
How quick can we be?
(data visualization techniques for engineers)
Who we are
Who we are




Alice Bonhomme-Biais
Who we are




Alice Bonhomme-Biais   Avni Khatri
DATA
OUR PROCESS
Goals
Goals
1. Plot the number of people at each location
Goals
1. Plot the number of people at each location
2. Plot the percentage of women at each location
Goals
1. Plot the number of people at each location
2. Plot the percentage of women at each location
3. Plot two dimensions
Goals
1. Plot the number of people at each location
2. Plot the percentage of women at each location
3. Plot two dimensions
4. Clearly show the gender disparity
Goals
1. Plot the number of people at each location
2. Plot the percentage of women at each location
3. Plot two dimensions
4. Clearly show the gender disparity
5. Use the tool to visualize data for future RHoKs
OPENHEATMAP
OpenHeatMap Demo
TOOLS
Non-programmatic tools
Non-programmatic tools
•   OpenHeatMap
•   Google Fusion Tables
•   Google Charts
•   Socrata
•   ChartsBin
•   Factual
Non-programmatic tools
•   OpenHeatMap
•   Google Fusion Tables
•   Google Charts
•   Socrata
•   ChartsBin
•   Factual
Non-programmatic tools
•   OpenHeatMap
•   Google Fusion Tables
•   Google Charts
•   Socrata
•   ChartsBin
•   Factual
Programatic tools
Programatic tools
•   Google Maps JS API
•   Yahoo! Maps Web Services
•   Bing Maps AJAX Control
•   Google Charts Tools
GOOGLE FUSION TABLES
Fusion Tables Demo
SOCRATA
GOOGLE MAPS API
function initialize() {
   var latlng = new google.maps.LatLng(41.850033, -87.6500523);
   var myOptions = {
       zoom: 3,
       center: latlng,
       mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(
   document.getElementById("map_canvas"),
           myOptions);
}
function initialize() {
   var latlng = new google.maps.LatLng(41.850033, -87.6500523);
   var myOptions = {
       zoom: 3,
       center: latlng,
       mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(
   document.getElementById("map_canvas"),
           myOptions);
}
function initialize() {
   var latlng = new google.maps.LatLng(41.850033, -87.6500523);
   var myOptions = {
       zoom: 3,
       center: latlng,
       mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(
   document.getElementById("map_canvas"),
           myOptions);
}
var locations = [
    ["Aarhus, Denmark",56.162939,10.203921,10,20],
    ["Bangalore, India",12.971599,77.594563,217,11.98],
    ["Chicago, Illinois",41.878114,-87.629798,107,31.78],
    ["Nairobi, Kenya",1.283333,36.816667,33,6.06].......];
var locations = [
    ["Aarhus, Denmark",56.162939,10.203921,10,20],
    ["Bangalore, India",12.971599,77.594563,217,11.98],
    ["Chicago, Illinois",41.878114,-87.629798,107,31.78],
    ["Nairobi, Kenya",1.283333,36.816667,33,6.06].......];
function setMarkers(map, markers) {
    ...
    for (var i = 0; i < markers.length; i++) {
        markerLatLng = new
        google.maps.LatLng(markers[i][1],markers[i][2]);

        marker = new google.maps.Marker({
                    position: markerLatLng,
                    map: map,
                    title: markers[i][0],
                    zIndex: 1
        );
    }
}


// add call to setMarkers in initialize
function initialize() {
     ...
     setMarkers (map, locations);
}
function setMarkers(map, markers) {
    ...
    for (var i = 0; i < markers.length; i++) {
        markerLatLng = new
        google.maps.LatLng(markers[i][1],markers[i][2]);

        marker = new google.maps.Marker({
                    position: markerLatLng,
                    map: map,
                    title: markers[i][0],
                    zIndex: 1
        );
    }
}


// add call to setMarkers in initialize
function initialize() {
     ...
     setMarkers (map, locations);
}
function setMarkers(map, markers) {
    ...
    for (var i = 0; i < markers.length; i++) {
        markerLatLng = new
        google.maps.LatLng(markers[i][1],markers[i][2]);

        marker = new google.maps.Marker({
                    position: markerLatLng,
                    map: map,
                    title: markers[i][0],
                    zIndex: 1
        );
    }
}


// add call to setMarkers in initialize
function initialize() {
     ...
     setMarkers (map, locations);
}
function setMarkers(map, markers) {
    for (var i = 0; i < markers.length; i++) {
        ...

        iwContent = "<span class=”label”>" + markers[i][0] +
          "</span><br/>" + "Number of People: " + markers[i][3] +
          "<br/>" + "% of Women: " + markers[i][4];

         marker = new google.maps.Marker({
             ...
             html: iwContent
            });

        google.maps.event.addListener(marker, "click",
            function() {
                infowindow.setContent(this.html);
                infowindow.open(map, this);
            });
    }
}
function initialize() {
     ...
   infowindow = new google.maps.InfoWindow({
       content: "loading..."
   });
}
function setMarkers(map, markers) {
    for (var i = 0; i < markers.length; i++) {
        ...

        iwContent = "<span class=”label”>" + markers[i][0] +
          "</span><br/>" + "Number of People: " + markers[i][3] +
          "<br/>" + "% of Women: " + markers[i][4];

         marker = new google.maps.Marker({
             ...
             html: iwContent
            });

        google.maps.event.addListener(marker, "click",
            function() {
                infowindow.setContent(this.html);
                infowindow.open(map, this);
            });
    }
}
function initialize() {
     ...
   infowindow = new google.maps.InfoWindow({
       content: "loading..."
   });
}
function setMarkers(map, markers) {
    for (var i = 0; i < markers.length; i++) {
        ...

        iwContent = "<span class=”label”>" + markers[i][0] +
          "</span><br/>" + "Number of People: " + markers[i][3] +
          "<br/>" + "% of Women: " + markers[i][4];

         marker = new google.maps.Marker({
             ...
             html: iwContent
            });

        google.maps.event.addListener(marker, "click",
            function() {
                infowindow.setContent(this.html);
                infowindow.open(map, this);
            });
    }
}
function initialize() {
     ...
   infowindow = new google.maps.InfoWindow({
       content: "loading..."
   });
}
<script src="http://gmaps-utility-library.googlecode.com/svn/
trunk/markerclusterer/1.0/src/markerclusterer.js"></script>

var data = {"count": 232,
"participants": [
        {
                "location": "Aarhus, Denmark",
                "gender": "Female",
                "latitude": "56.162939",
                "longitude": "10.203921"
        },
        {
                "location": "Aarhus, Denmark",
                "gender": "Female",
                "latitude": "56.162939",
                "longitude": "10.203921"
        }
...
...
]};
<script src="http://gmaps-utility-library.googlecode.com/svn/
trunk/markerclusterer/1.0/src/markerclusterer.js"></script>

var data = {"count": 232,
"participants": [
        {
                "location": "Aarhus, Denmark",
                "gender": "Female",
                "latitude": "56.162939",
                "longitude": "10.203921"
        },
        {
                "location": "Aarhus, Denmark",
                "gender": "Female",
                "latitude": "56.162939",
                "longitude": "10.203921"
        }
...
...
]};
<script src="http://gmaps-utility-library.googlecode.com/svn/
trunk/markerclusterer/1.0/src/markerclusterer.js"></script>

var data = {"count": 232,
"participants": [
        {
                "location": "Aarhus, Denmark",
                "gender": "Female",
                "latitude": "56.162939",
                "longitude": "10.203921"
        },
        {
                "location": "Aarhus, Denmark",
                "gender": "Female",
                "latitude": "56.162939",
                "longitude": "10.203921"
        }
...
...
]};
var markers = [];

for (var i = 0; i < data.participants.length; ++i) {
    var latlng = new GLatLng(data.participants[i].latitude,
                data.participants[i].longitude);
    var marker = new GMarker(latlng, {icon: icon});
    markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers);
var markers = [];

for (var i = 0; i < data.participants.length; ++i) {
    var latlng = new GLatLng(data.participants[i].latitude,
                data.participants[i].longitude);
    var marker = new GMarker(latlng, {icon: icon});
    markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers);
var layer = new google.maps.FusionTablesLayer(747060, {
              heatmap: true
    });

layer.setMap(map);
var layer = new google.maps.FusionTablesLayer(747060, {
              heatmap: true
    });

layer.setMap(map);
function plotCircles(map, dataPoints) {

    ...

    for (var i = 0; i < dataPoints.length; i++) {
        pointLatLng = new
          google.maps.LatLng(dataPoints[i][1],dataPoints[i][2]);

          circleOptions = {
              strokeColor: "#FF0000",
              strokeOpacity: 0.8,
              strokeWeight: 2,
              fillColor: “#FF0000”,
              fillOpacity: 0.40,
              map: map,
              center: pointLatLng,
              radius: dataPoints[i][3]*3000
          };
          circle = new google.maps.Circle(circleOptions);
    }
function plotCircles(map, dataPoints) {

    ...

    for (var i = 0; i < dataPoints.length; i++) {
        pointLatLng = new
          google.maps.LatLng(dataPoints[i][1],dataPoints[i][2]);

          circleOptions = {
              strokeColor: "#FF0000",
              strokeOpacity: 0.8,
              strokeWeight: 2,
              fillColor: “#FF0000”,
              fillOpacity: 0.40,
              map: map,
              center: pointLatLng,
              radius: dataPoints[i][3]*3000
          };
          circle = new google.maps.Circle(circleOptions);
    }
...

percentage = dataPoints[i][4];

if (percentage <= 10) {
    color = "#FF0000";
} else if (percentage >=20) {
    color = "#339900";
} else {
    color = "#FFCC00";
}

circleOptions = {
     strokeColor: color,
....
...

percentage = dataPoints[i][4];

if (percentage <= 10) {
    color = "#FF0000";
} else if (percentage >=20) {
    color = "#339900";
} else {
    color = "#FFCC00";
}

circleOptions = {
     strokeColor: color,
....
...

setMarkers (map, locations);
infowindow = new google.maps.InfoWindow({
      content: "loading..."
  });

....
...

setMarkers (map, locations);
infowindow = new google.maps.InfoWindow({
      content: "loading..."
  });

....
YAHOO! MAPS WEB SERVICES
....
icon = new YImage();
icon.src = "marker_34_red.png";
icon.size = new YSize(20,34);
icon.offsetSmartWindow = new YCoordPoint(9,0);

....

var marker = new YMarker(point, icon);

....
....
icon = new YImage();
icon.src = "marker_34_red.png";
icon.size = new YSize(20,34);
icon.offsetSmartWindow = new YCoordPoint(9,0);

....

var marker = new YMarker(point, icon);

....
GOOGLE CHARTS TOOLS
Conclusions
                    Visualize 2
                                No Coding   Legend   First Map   Full Control
                   sets of data

  OpenHeatMap                                          Easy

  Google Fusion
                                                       Easy
     Tables

  Google Charts                                      Moderate


     Socrata                                         Moderate


 Google Maps API                                     Moderate

  Yahoo Maps
                                                     Moderate
  Web Services

  Google Charts
                                                     Moderate
     Tools
Conclusions
Conclusions
•   Very easy to plot flat numbers with most tools
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
•   Flash graphics still ahead of JS graphics with respect to data visualization
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
•   Flash graphics still ahead of JS graphics with respect to data visualization
•   Most map and charting tools need better overall legend support
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
•   Flash graphics still ahead of JS graphics with respect to data visualization
•   Most map and charting tools need better overall legend support
•   Maps API products very similar in structure
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
•   Flash graphics still ahead of JS graphics with respect to data visualization
•   Most map and charting tools need better overall legend support
•   Maps API products very similar in structure
•   We've uncovered just the tip of the iceberg in terms of data visualization
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
•   Flash graphics still ahead of JS graphics with respect to data visualization
•   Most map and charting tools need better overall legend support
•   Maps API products very similar in structure
•   We've uncovered just the tip of the iceberg in terms of data visualization
•   Our visualized data showed us that the more the people that attended the
    event, the more likely we were to meet the 20% challenge
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
•   Flash graphics still ahead of JS graphics with respect to data visualization
•   Most map and charting tools need better overall legend support
•   Maps API products very similar in structure
•   We've uncovered just the tip of the iceberg in terms of data visualization
•   Our visualized data showed us that the more the people that attended the
    event, the more likely we were to meet the 20% challenge
•   We need to improve and automate our data collection process as much as
    possible
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
•   Flash graphics still ahead of JS graphics with respect to data visualization
•   Most map and charting tools need better overall legend support
•   Maps API products very similar in structure
•   We've uncovered just the tip of the iceberg in terms of data visualization
•   Our visualized data showed us that the more the people that attended the
    event, the more likely we were to meet the 20% challenge
•   We need to improve and automate our data collection process as much as
    possible
•   We need more women hackers
Conclusions
•   Very easy to plot flat numbers with most tools
•   Plotting multiple sets of data without code is not trivial
•   Flash graphics still ahead of JS graphics with respect to data visualization
•   Most map and charting tools need better overall legend support
•   Maps API products very similar in structure
•   We've uncovered just the tip of the iceberg in terms of data visualization
•   Our visualized data showed us that the more the people that attended the
    event, the more likely we were to meet the 20% challenge
•   We need to improve and automate our data collection process as much as
    possible
•   We need more women hackers
•   When women do participate, they win!
RHoK #3 on June 4th and 5th


    SIGN UP NOW!
Contact us




aliceb@google.com   avni@avni.net
                      @avni321
Resources and further
•   http://msdn.microsoft.com/en-us/library/bb429619.aspx
•   http://code.google.com/apis/chart/
•   http://www.google.com/fusiontables/public/tour/index.html
•   http://code.google.com/apis/maps/documentation/javascript/
•   http://developer.yahoo.com/maps/
•   http://www.openheatmap.com/
•   http://googlegeodevelopers.blogspot.com/2009/04/markerclusterer-solution-to-too-
    many.html
•   http://opendata.socrata.com/
Photo Credits
 •   http://www.flickr.com/photos/compassalba/5361528668/sizes/o/in/photostream/
 •   http://www.flickr.com/photos/rhok_chicago/5244434726/in/
     set-72157625557470340
 •   http://www.flickr.com/photos/rhok_chicago/5233673064/in/
     set-72157625529538216 
 •   http://www.flickr.com/photos/10785432@N03/4123252604/
 •   http://www.flickr.com/photos/thehbunny/5055948378/
 •   http://www.flickr.com/photos/53941041@N00/4977883190/
 •   http://www.flickr.com/photos/rhok_chicago/5243866521/
 •   http://www.flickr.com/photos/rhok_chicago/5244461658/in/
     set-72157625557470340
 •   http://www.flickr.com/photos/rhok_chicago/5233687260/in/
     set-72157625529538216
 •   http://www.flickr.com/photos/ladypain/1950149100/in/photostream/
 •   http://www.flickr.com/photos/10687935@N04/3055314845/
 •   http://www.flickr.com/photos/42788859@N00/318947873/

More Related Content

What's hot

Geolocation and Mapping in PhoneGap applications
Geolocation and Mapping in PhoneGap applicationsGeolocation and Mapping in PhoneGap applications
Geolocation and Mapping in PhoneGap applicationsIvano Malavolta
 
MongoDB - Introduction
MongoDB - IntroductionMongoDB - Introduction
MongoDB - IntroductionVagmi Mudumbai
 
D3 Mapping Visualization
D3 Mapping VisualizationD3 Mapping Visualization
D3 Mapping VisualizationSudhir Chowbina
 
D3.js - A picture is worth a thousand words
D3.js - A picture is worth a thousand wordsD3.js - A picture is worth a thousand words
D3.js - A picture is worth a thousand wordsApptension
 
Spark Streaming - Meetup Data Analysis
Spark Streaming - Meetup Data AnalysisSpark Streaming - Meetup Data Analysis
Spark Streaming - Meetup Data AnalysisSushmanth Sagala
 
Developing Applications with Microsoft Virtual Earth
Developing Applications with Microsoft Virtual EarthDeveloping Applications with Microsoft Virtual Earth
Developing Applications with Microsoft Virtual Earthgoodfriday
 
Desenvolvimento web com Ruby on Rails (parte 5)
Desenvolvimento web com Ruby on Rails (parte 5)Desenvolvimento web com Ruby on Rails (parte 5)
Desenvolvimento web com Ruby on Rails (parte 5)Joao Lucas Santana
 
Introduction to d3js (and SVG)
Introduction to d3js (and SVG)Introduction to d3js (and SVG)
Introduction to d3js (and SVG)zahid-mian
 
Youth Tobacco Survey Analysis
Youth Tobacco Survey AnalysisYouth Tobacco Survey Analysis
Youth Tobacco Survey AnalysisRoshik Ganesan
 
mobl presentation @ IHomer
mobl presentation @ IHomermobl presentation @ IHomer
mobl presentation @ IHomerzefhemel
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !Sébastien Prunier
 
Powering Systems of Engagement
Powering Systems of EngagementPowering Systems of Engagement
Powering Systems of EngagementMongoDB
 
Time Series Analysis by JavaScript LL matsuri 2013
Time Series Analysis by JavaScript LL matsuri 2013 Time Series Analysis by JavaScript LL matsuri 2013
Time Series Analysis by JavaScript LL matsuri 2013 Daichi Morifuji
 

What's hot (14)

Geolocation and Mapping in PhoneGap applications
Geolocation and Mapping in PhoneGap applicationsGeolocation and Mapping in PhoneGap applications
Geolocation and Mapping in PhoneGap applications
 
Baitap tkw
Baitap tkwBaitap tkw
Baitap tkw
 
MongoDB - Introduction
MongoDB - IntroductionMongoDB - Introduction
MongoDB - Introduction
 
D3 Mapping Visualization
D3 Mapping VisualizationD3 Mapping Visualization
D3 Mapping Visualization
 
D3.js - A picture is worth a thousand words
D3.js - A picture is worth a thousand wordsD3.js - A picture is worth a thousand words
D3.js - A picture is worth a thousand words
 
Spark Streaming - Meetup Data Analysis
Spark Streaming - Meetup Data AnalysisSpark Streaming - Meetup Data Analysis
Spark Streaming - Meetup Data Analysis
 
Developing Applications with Microsoft Virtual Earth
Developing Applications with Microsoft Virtual EarthDeveloping Applications with Microsoft Virtual Earth
Developing Applications with Microsoft Virtual Earth
 
Desenvolvimento web com Ruby on Rails (parte 5)
Desenvolvimento web com Ruby on Rails (parte 5)Desenvolvimento web com Ruby on Rails (parte 5)
Desenvolvimento web com Ruby on Rails (parte 5)
 
Introduction to d3js (and SVG)
Introduction to d3js (and SVG)Introduction to d3js (and SVG)
Introduction to d3js (and SVG)
 
Youth Tobacco Survey Analysis
Youth Tobacco Survey AnalysisYouth Tobacco Survey Analysis
Youth Tobacco Survey Analysis
 
mobl presentation @ IHomer
mobl presentation @ IHomermobl presentation @ IHomer
mobl presentation @ IHomer
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !
 
Powering Systems of Engagement
Powering Systems of EngagementPowering Systems of Engagement
Powering Systems of Engagement
 
Time Series Analysis by JavaScript LL matsuri 2013
Time Series Analysis by JavaScript LL matsuri 2013 Time Series Analysis by JavaScript LL matsuri 2013
Time Series Analysis by JavaScript LL matsuri 2013
 

Viewers also liked

Copyright final images 5
Copyright final images 5Copyright final images 5
Copyright final images 5amandasonnier
 
Erika
ErikaErika
Erika99175
 
Suburbia mode - luoghi e paesaggi pubblici a casoria na
Suburbia mode - luoghi e paesaggi pubblici a casoria naSuburbia mode - luoghi e paesaggi pubblici a casoria na
Suburbia mode - luoghi e paesaggi pubblici a casoria naBiennale spazio pubblico
 
Object counting in high resolution remote sensing images with OTB
Object counting in high resolution remote sensing images with OTBObject counting in high resolution remote sensing images with OTB
Object counting in high resolution remote sensing images with OTBmelaneum
 
Diseño y evaluacion de proyectos de inversion
Diseño y evaluacion de proyectos de inversionDiseño y evaluacion de proyectos de inversion
Diseño y evaluacion de proyectos de inversionMelvis Martinez
 

Viewers also liked (6)

Images and copyright
Images and copyrightImages and copyright
Images and copyright
 
Copyright final images 5
Copyright final images 5Copyright final images 5
Copyright final images 5
 
Erika
ErikaErika
Erika
 
Suburbia mode - luoghi e paesaggi pubblici a casoria na
Suburbia mode - luoghi e paesaggi pubblici a casoria naSuburbia mode - luoghi e paesaggi pubblici a casoria na
Suburbia mode - luoghi e paesaggi pubblici a casoria na
 
Object counting in high resolution remote sensing images with OTB
Object counting in high resolution remote sensing images with OTBObject counting in high resolution remote sensing images with OTB
Object counting in high resolution remote sensing images with OTB
 
Diseño y evaluacion de proyectos de inversion
Diseño y evaluacion de proyectos de inversionDiseño y evaluacion de proyectos de inversion
Diseño y evaluacion de proyectos de inversion
 

Similar to Visualize Data Locations Engineers

Das Web Wird Mobil - Geolocation und Location Based Services
Das Web Wird Mobil - Geolocation und Location Based ServicesDas Web Wird Mobil - Geolocation und Location Based Services
Das Web Wird Mobil - Geolocation und Location Based ServicesStephan Schmidt
 
Gis SAPO Hands On
Gis SAPO Hands OnGis SAPO Hands On
Gis SAPO Hands Oncodebits
 
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece CoLab Athens
 
How data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesHow data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesElectronic Arts / DICE
 
Grails : Ordr, Maps & Charts
Grails : Ordr, Maps & ChartsGrails : Ordr, Maps & Charts
Grails : Ordr, Maps & ChartsHenk Jurriens
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of usOSCON Byrum
 
Django GeoTracker
Django GeoTrackerDjango GeoTracker
Django GeoTrackerJaniTiainen
 
MongoDB dla administratora
MongoDB dla administratora MongoDB dla administratora
MongoDB dla administratora 3camp
 
Gmaps Railscamp2008
Gmaps Railscamp2008Gmaps Railscamp2008
Gmaps Railscamp2008xilinus
 
What are customers building with new Bing Maps capabilities
What are customers building with new Bing Maps capabilitiesWhat are customers building with new Bing Maps capabilities
What are customers building with new Bing Maps capabilitiesMicrosoft Tech Community
 
Enterprise workflow with Apps Script
Enterprise workflow with Apps ScriptEnterprise workflow with Apps Script
Enterprise workflow with Apps Scriptccherubino
 
Google Maps API - DevFest Karlsruhe
Google Maps API - DevFest Karlsruhe Google Maps API - DevFest Karlsruhe
Google Maps API - DevFest Karlsruhe Martin Kleppe
 
Barcamp GoogleMaps - praktické ukázky kódu
Barcamp GoogleMaps - praktické ukázky kóduBarcamp GoogleMaps - praktické ukázky kódu
Barcamp GoogleMaps - praktické ukázky kóduMilos Lenoch
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs偉格 高
 
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)Kanika Garg
 

Similar to Visualize Data Locations Engineers (20)

Google Maps JS API
Google Maps JS APIGoogle Maps JS API
Google Maps JS API
 
Das Web Wird Mobil - Geolocation und Location Based Services
Das Web Wird Mobil - Geolocation und Location Based ServicesDas Web Wird Mobil - Geolocation und Location Based Services
Das Web Wird Mobil - Geolocation und Location Based Services
 
Gis SAPO Hands On
Gis SAPO Hands OnGis SAPO Hands On
Gis SAPO Hands On
 
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
 
How data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesHow data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield Heroes
 
JQuery Flot
JQuery FlotJQuery Flot
JQuery Flot
 
Grails : Ordr, Maps & Charts
Grails : Ordr, Maps & ChartsGrails : Ordr, Maps & Charts
Grails : Ordr, Maps & Charts
 
Google Maps Api
Google Maps ApiGoogle Maps Api
Google Maps Api
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 
Geolocation and Mapping
Geolocation and MappingGeolocation and Mapping
Geolocation and Mapping
 
Google Maps API 101
Google Maps API 101Google Maps API 101
Google Maps API 101
 
Django GeoTracker
Django GeoTrackerDjango GeoTracker
Django GeoTracker
 
MongoDB dla administratora
MongoDB dla administratora MongoDB dla administratora
MongoDB dla administratora
 
Gmaps Railscamp2008
Gmaps Railscamp2008Gmaps Railscamp2008
Gmaps Railscamp2008
 
What are customers building with new Bing Maps capabilities
What are customers building with new Bing Maps capabilitiesWhat are customers building with new Bing Maps capabilities
What are customers building with new Bing Maps capabilities
 
Enterprise workflow with Apps Script
Enterprise workflow with Apps ScriptEnterprise workflow with Apps Script
Enterprise workflow with Apps Script
 
Google Maps API - DevFest Karlsruhe
Google Maps API - DevFest Karlsruhe Google Maps API - DevFest Karlsruhe
Google Maps API - DevFest Karlsruhe
 
Barcamp GoogleMaps - praktické ukázky kódu
Barcamp GoogleMaps - praktické ukázky kóduBarcamp GoogleMaps - praktické ukázky kódu
Barcamp GoogleMaps - praktické ukázky kódu
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs
 
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)
 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

Visualize Data Locations Engineers

  • 1. How quick can we be? (data visualization techniques for engineers)
  • 3. Who we are Alice Bonhomme-Biais
  • 4. Who we are Alice Bonhomme-Biais Avni Khatri
  • 5.
  • 6.
  • 8.
  • 9.
  • 11. Goals
  • 12. Goals 1. Plot the number of people at each location
  • 13. Goals 1. Plot the number of people at each location 2. Plot the percentage of women at each location
  • 14. Goals 1. Plot the number of people at each location 2. Plot the percentage of women at each location 3. Plot two dimensions
  • 15. Goals 1. Plot the number of people at each location 2. Plot the percentage of women at each location 3. Plot two dimensions 4. Clearly show the gender disparity
  • 16. Goals 1. Plot the number of people at each location 2. Plot the percentage of women at each location 3. Plot two dimensions 4. Clearly show the gender disparity 5. Use the tool to visualize data for future RHoKs
  • 19.
  • 20. TOOLS
  • 22. Non-programmatic tools • OpenHeatMap • Google Fusion Tables • Google Charts • Socrata • ChartsBin • Factual
  • 23. Non-programmatic tools • OpenHeatMap • Google Fusion Tables • Google Charts • Socrata • ChartsBin • Factual
  • 24. Non-programmatic tools • OpenHeatMap • Google Fusion Tables • Google Charts • Socrata • ChartsBin • Factual
  • 26. Programatic tools • Google Maps JS API • Yahoo! Maps Web Services • Bing Maps AJAX Control • Google Charts Tools
  • 29.
  • 30.
  • 32.
  • 34.
  • 35. function initialize() { var latlng = new google.maps.LatLng(41.850033, -87.6500523); var myOptions = { zoom: 3, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map( document.getElementById("map_canvas"), myOptions); }
  • 36. function initialize() { var latlng = new google.maps.LatLng(41.850033, -87.6500523); var myOptions = { zoom: 3, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map( document.getElementById("map_canvas"), myOptions); }
  • 37. function initialize() { var latlng = new google.maps.LatLng(41.850033, -87.6500523); var myOptions = { zoom: 3, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map( document.getElementById("map_canvas"), myOptions); }
  • 38. var locations = [ ["Aarhus, Denmark",56.162939,10.203921,10,20], ["Bangalore, India",12.971599,77.594563,217,11.98], ["Chicago, Illinois",41.878114,-87.629798,107,31.78], ["Nairobi, Kenya",1.283333,36.816667,33,6.06].......];
  • 39. var locations = [ ["Aarhus, Denmark",56.162939,10.203921,10,20], ["Bangalore, India",12.971599,77.594563,217,11.98], ["Chicago, Illinois",41.878114,-87.629798,107,31.78], ["Nairobi, Kenya",1.283333,36.816667,33,6.06].......];
  • 40. function setMarkers(map, markers) { ... for (var i = 0; i < markers.length; i++) { markerLatLng = new google.maps.LatLng(markers[i][1],markers[i][2]); marker = new google.maps.Marker({ position: markerLatLng, map: map, title: markers[i][0], zIndex: 1 ); } } // add call to setMarkers in initialize function initialize() { ... setMarkers (map, locations); }
  • 41. function setMarkers(map, markers) { ... for (var i = 0; i < markers.length; i++) { markerLatLng = new google.maps.LatLng(markers[i][1],markers[i][2]); marker = new google.maps.Marker({ position: markerLatLng, map: map, title: markers[i][0], zIndex: 1 ); } } // add call to setMarkers in initialize function initialize() { ... setMarkers (map, locations); }
  • 42. function setMarkers(map, markers) { ... for (var i = 0; i < markers.length; i++) { markerLatLng = new google.maps.LatLng(markers[i][1],markers[i][2]); marker = new google.maps.Marker({ position: markerLatLng, map: map, title: markers[i][0], zIndex: 1 ); } } // add call to setMarkers in initialize function initialize() { ... setMarkers (map, locations); }
  • 43. function setMarkers(map, markers) { for (var i = 0; i < markers.length; i++) { ... iwContent = "<span class=”label”>" + markers[i][0] + "</span><br/>" + "Number of People: " + markers[i][3] + "<br/>" + "% of Women: " + markers[i][4]; marker = new google.maps.Marker({ ... html: iwContent }); google.maps.event.addListener(marker, "click", function() { infowindow.setContent(this.html); infowindow.open(map, this); }); } } function initialize() { ... infowindow = new google.maps.InfoWindow({ content: "loading..." }); }
  • 44. function setMarkers(map, markers) { for (var i = 0; i < markers.length; i++) { ... iwContent = "<span class=”label”>" + markers[i][0] + "</span><br/>" + "Number of People: " + markers[i][3] + "<br/>" + "% of Women: " + markers[i][4]; marker = new google.maps.Marker({ ... html: iwContent }); google.maps.event.addListener(marker, "click", function() { infowindow.setContent(this.html); infowindow.open(map, this); }); } } function initialize() { ... infowindow = new google.maps.InfoWindow({ content: "loading..." }); }
  • 45. function setMarkers(map, markers) { for (var i = 0; i < markers.length; i++) { ... iwContent = "<span class=”label”>" + markers[i][0] + "</span><br/>" + "Number of People: " + markers[i][3] + "<br/>" + "% of Women: " + markers[i][4]; marker = new google.maps.Marker({ ... html: iwContent }); google.maps.event.addListener(marker, "click", function() { infowindow.setContent(this.html); infowindow.open(map, this); }); } } function initialize() { ... infowindow = new google.maps.InfoWindow({ content: "loading..." }); }
  • 46.
  • 47.
  • 48. <script src="http://gmaps-utility-library.googlecode.com/svn/ trunk/markerclusterer/1.0/src/markerclusterer.js"></script> var data = {"count": 232, "participants": [ { "location": "Aarhus, Denmark", "gender": "Female", "latitude": "56.162939", "longitude": "10.203921" }, { "location": "Aarhus, Denmark", "gender": "Female", "latitude": "56.162939", "longitude": "10.203921" } ... ... ]};
  • 49. <script src="http://gmaps-utility-library.googlecode.com/svn/ trunk/markerclusterer/1.0/src/markerclusterer.js"></script> var data = {"count": 232, "participants": [ { "location": "Aarhus, Denmark", "gender": "Female", "latitude": "56.162939", "longitude": "10.203921" }, { "location": "Aarhus, Denmark", "gender": "Female", "latitude": "56.162939", "longitude": "10.203921" } ... ... ]};
  • 50. <script src="http://gmaps-utility-library.googlecode.com/svn/ trunk/markerclusterer/1.0/src/markerclusterer.js"></script> var data = {"count": 232, "participants": [ { "location": "Aarhus, Denmark", "gender": "Female", "latitude": "56.162939", "longitude": "10.203921" }, { "location": "Aarhus, Denmark", "gender": "Female", "latitude": "56.162939", "longitude": "10.203921" } ... ... ]};
  • 51. var markers = []; for (var i = 0; i < data.participants.length; ++i) { var latlng = new GLatLng(data.participants[i].latitude, data.participants[i].longitude); var marker = new GMarker(latlng, {icon: icon}); markers.push(marker); } var markerCluster = new MarkerClusterer(map, markers);
  • 52. var markers = []; for (var i = 0; i < data.participants.length; ++i) { var latlng = new GLatLng(data.participants[i].latitude, data.participants[i].longitude); var marker = new GMarker(latlng, {icon: icon}); markers.push(marker); } var markerCluster = new MarkerClusterer(map, markers);
  • 53.
  • 54.
  • 55.
  • 56. var layer = new google.maps.FusionTablesLayer(747060, { heatmap: true }); layer.setMap(map);
  • 57. var layer = new google.maps.FusionTablesLayer(747060, { heatmap: true }); layer.setMap(map);
  • 58.
  • 59. function plotCircles(map, dataPoints) { ... for (var i = 0; i < dataPoints.length; i++) { pointLatLng = new google.maps.LatLng(dataPoints[i][1],dataPoints[i][2]); circleOptions = { strokeColor: "#FF0000", strokeOpacity: 0.8, strokeWeight: 2, fillColor: “#FF0000”, fillOpacity: 0.40, map: map, center: pointLatLng, radius: dataPoints[i][3]*3000 }; circle = new google.maps.Circle(circleOptions); }
  • 60. function plotCircles(map, dataPoints) { ... for (var i = 0; i < dataPoints.length; i++) { pointLatLng = new google.maps.LatLng(dataPoints[i][1],dataPoints[i][2]); circleOptions = { strokeColor: "#FF0000", strokeOpacity: 0.8, strokeWeight: 2, fillColor: “#FF0000”, fillOpacity: 0.40, map: map, center: pointLatLng, radius: dataPoints[i][3]*3000 }; circle = new google.maps.Circle(circleOptions); }
  • 61. ... percentage = dataPoints[i][4]; if (percentage <= 10) { color = "#FF0000"; } else if (percentage >=20) { color = "#339900"; } else { color = "#FFCC00"; } circleOptions = { strokeColor: color, ....
  • 62. ... percentage = dataPoints[i][4]; if (percentage <= 10) { color = "#FF0000"; } else if (percentage >=20) { color = "#339900"; } else { color = "#FFCC00"; } circleOptions = { strokeColor: color, ....
  • 63.
  • 64. ... setMarkers (map, locations); infowindow = new google.maps.InfoWindow({ content: "loading..." }); ....
  • 65. ... setMarkers (map, locations); infowindow = new google.maps.InfoWindow({ content: "loading..." }); ....
  • 66.
  • 67. YAHOO! MAPS WEB SERVICES
  • 68.
  • 69.
  • 70. .... icon = new YImage(); icon.src = "marker_34_red.png"; icon.size = new YSize(20,34); icon.offsetSmartWindow = new YCoordPoint(9,0); .... var marker = new YMarker(point, icon); ....
  • 71. .... icon = new YImage(); icon.src = "marker_34_red.png"; icon.size = new YSize(20,34); icon.offsetSmartWindow = new YCoordPoint(9,0); .... var marker = new YMarker(point, icon); ....
  • 72.
  • 73.
  • 75.
  • 76. Conclusions Visualize 2 No Coding Legend First Map Full Control sets of data OpenHeatMap Easy Google Fusion Easy Tables Google Charts Moderate Socrata Moderate Google Maps API Moderate Yahoo Maps Moderate Web Services Google Charts Moderate Tools
  • 78. Conclusions • Very easy to plot flat numbers with most tools
  • 79. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial
  • 80. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial • Flash graphics still ahead of JS graphics with respect to data visualization
  • 81. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial • Flash graphics still ahead of JS graphics with respect to data visualization • Most map and charting tools need better overall legend support
  • 82. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial • Flash graphics still ahead of JS graphics with respect to data visualization • Most map and charting tools need better overall legend support • Maps API products very similar in structure
  • 83. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial • Flash graphics still ahead of JS graphics with respect to data visualization • Most map and charting tools need better overall legend support • Maps API products very similar in structure • We've uncovered just the tip of the iceberg in terms of data visualization
  • 84. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial • Flash graphics still ahead of JS graphics with respect to data visualization • Most map and charting tools need better overall legend support • Maps API products very similar in structure • We've uncovered just the tip of the iceberg in terms of data visualization • Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge
  • 85. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial • Flash graphics still ahead of JS graphics with respect to data visualization • Most map and charting tools need better overall legend support • Maps API products very similar in structure • We've uncovered just the tip of the iceberg in terms of data visualization • Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge • We need to improve and automate our data collection process as much as possible
  • 86. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial • Flash graphics still ahead of JS graphics with respect to data visualization • Most map and charting tools need better overall legend support • Maps API products very similar in structure • We've uncovered just the tip of the iceberg in terms of data visualization • Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge • We need to improve and automate our data collection process as much as possible • We need more women hackers
  • 87. Conclusions • Very easy to plot flat numbers with most tools • Plotting multiple sets of data without code is not trivial • Flash graphics still ahead of JS graphics with respect to data visualization • Most map and charting tools need better overall legend support • Maps API products very similar in structure • We've uncovered just the tip of the iceberg in terms of data visualization • Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge • We need to improve and automate our data collection process as much as possible • We need more women hackers • When women do participate, they win!
  • 88.
  • 89. RHoK #3 on June 4th and 5th SIGN UP NOW!
  • 90. Contact us aliceb@google.com avni@avni.net @avni321
  • 91. Resources and further • http://msdn.microsoft.com/en-us/library/bb429619.aspx • http://code.google.com/apis/chart/ • http://www.google.com/fusiontables/public/tour/index.html • http://code.google.com/apis/maps/documentation/javascript/ • http://developer.yahoo.com/maps/ • http://www.openheatmap.com/ • http://googlegeodevelopers.blogspot.com/2009/04/markerclusterer-solution-to-too- many.html • http://opendata.socrata.com/
  • 92. Photo Credits • http://www.flickr.com/photos/compassalba/5361528668/sizes/o/in/photostream/ • http://www.flickr.com/photos/rhok_chicago/5244434726/in/ set-72157625557470340 • http://www.flickr.com/photos/rhok_chicago/5233673064/in/ set-72157625529538216  • http://www.flickr.com/photos/10785432@N03/4123252604/ • http://www.flickr.com/photos/thehbunny/5055948378/ • http://www.flickr.com/photos/53941041@N00/4977883190/ • http://www.flickr.com/photos/rhok_chicago/5243866521/ • http://www.flickr.com/photos/rhok_chicago/5244461658/in/ set-72157625557470340 • http://www.flickr.com/photos/rhok_chicago/5233687260/in/ set-72157625529538216 • http://www.flickr.com/photos/ladypain/1950149100/in/photostream/ • http://www.flickr.com/photos/10687935@N04/3055314845/ • http://www.flickr.com/photos/42788859@N00/318947873/

Editor's Notes

  1. How quick can we be?\nData visualization techniques for FE Engineers\n
  2. \n&amp;#xA0;&amp;#xA0;Alice - Senior Engineer for Google&apos;s Crisis Response Team\n&amp;#xA0;&amp;#xA0; &amp;#xA0;Background - Person Finder,&amp;#xA0;\n&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;Maps, Back-end engineering, C++, Python\n\n\n&amp;#xA0;&amp;#xA0; Avni - Senior Front-end Engineer for Yahoo&apos;s Tiger Team\n&amp;#xA0;&amp;#xA0; &amp;#xA0;Background - DB backed web development,&amp;#xA0;\n&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;F2E for the last 2 years\n\n&amp;#xA0;This is us at RHoK as we&apos;re very sleep deprived trying to get our hacks done. \n\n
  3. \n&amp;#xA0;&amp;#xA0;Alice - Senior Engineer for Google&apos;s Crisis Response Team\n&amp;#xA0;&amp;#xA0; &amp;#xA0;Background - Person Finder,&amp;#xA0;\n&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;Maps, Back-end engineering, C++, Python\n\n\n&amp;#xA0;&amp;#xA0; Avni - Senior Front-end Engineer for Yahoo&apos;s Tiger Team\n&amp;#xA0;&amp;#xA0; &amp;#xA0;Background - DB backed web development,&amp;#xA0;\n&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;&amp;#xA0;&amp;#xA0; &amp;#xA0;F2E for the last 2 years\n\n&amp;#xA0;This is us at RHoK as we&apos;re very sleep deprived trying to get our hacks done. \n\n
  4. I want to first explain how we came to speaking about data visualization. \n\nAlice and I are both very passionate about Open Source technologies and bringing women into computing. \nAt the Grace Hopper Conference in October, the largest technical conference for women worldwide, \nwe both participated on the Open Source for Good Panel. The panel was hoping to motivate women there, who \nwere very new to Open Source, to become involved in Humanitarian FOSS projects. \n\nAlice had a spur of the moment thought to challenge the women at Grace Hopper to attend the next Random Hacks of Kindness event.\n\nRandom Hacks of Kindness or RHoK is a community of developers around the world working to develop software solutions that \nrespond to the challenges facing humanity today. Twice a year, the RHoK core team holds hack events around the world. \nAnd it just so happened there was hack taking place in December about two months after the Grace Hopper Conference.\n\n
  5. - At previous RHoK events, there were only about 2-3 women attending each location. \n- Usually, the number of women in a technical community or work environment is very few and over the last 20 years, \n the number of women graduating with CS degrees has dropped drastically [1]. \n\n- So we decided we would set the challenge to an ambitious 20%. \n- We would aim to get the goal of having 20% of the participants be female at each of the 21 locations around the world. We announced the challenge at Grace Hopper and promoted it via FB, Twitter, and Linked in groups, mailing lists, and a scholarship for 1 female student.\n\n- After the event - we wanted to see how many locations reached the 20%\n- In several locations were were quite successful. For example, in Chicago where we hit 31%, the winning group was comprised 4/5 female.\n\n\n[1] http://portal.acm.org/citation.cfm?id=1461928.1461947&amp;preflayout=flat&amp;CFID=19515564&amp;CFTOKEN=41185706&amp;#xA0; \n\n
  6. \nWe also wanted to represent the data we collected in a easy to comprehend manner. &amp;#xA0;\nThe data from the RHoK event made it very clear that we are so far from getting to 50/50.\n\nWe wanted to present this data so people feel shocked when they see it and are \nperhaps compelled to raise awareness and take action regarding the gender disparity in open source and CS in general.\n\nData visualization is not something either one of us do every day and we have limited amount of time due to our day jobs.\nbut we wanted to see what we could do with the data we had. \n\nWe talked to colleagues and found out that this is actually an interesting problem. A lot of engineers, even F2Es, don&apos;t think DV is easy.\nWe wanted to see if this was true. So we gave ourselves a challenge to explore data visualization techniques and the idea of the talk formed.\n\nI want to first show you the raw data we had. \n
  7. \nThe RHoK challenge was a spur of the moment idea by Alice that we presented at GHC. \nWe didn&apos;t take have a data collection process in place when we made the challenge.&amp;#xA0;We kind of just did it.&amp;#xA0;\n\nWe had online event registration - but at each of the location, people wrote their names when they signed in, so we didn&amp;#x2019;t have an online record of \nwho came to each hack or the gender of people who attended. \n\nThis is a snapshot of our original data set. We had one row per participant and Alice and I manually entered in the gender for every single person. \nKeep in mind this is over 1300 registrants for all of the locations. \n\nNow that we had all this data we wanted to figure out a way to present it in a manner that is easily digestible by the public and by the RHoK core team.&amp;#xA0;\n\n\n
  8. \nWe first aggregated the data so we could see how each location fared using spreadsheet formulas to help us.\n\nWe then wanted to start looking at different tools to help us visualize the data. \n\n
  9. \nWe decided on the following process :&amp;#xA0;\n\n- We would start with a set of tools to evaluate\n- We would take 10 minutes to see if the tool is viable option\n- If we found the tool to be viable, we would explore the tool further to reach our desired goals.\n
  10. With our goals being to:&amp;#xA0;\n- Plot number of people at each location\n- Plot percentage of women at each location\n- Be able to plot 2 dimensions - both the number of people and the percentage of women\n- Be able to clearly show the gender disparity\n- Be able to use this tool to easy visualize the data for future RHoKs. We want to continue this challenge and hopefully slowly \nincrease the goal percentage as more and more women attend. \n- We would take 1 hour with each tool to see if can reach our metric of success\n
  11. With our goals being to:&amp;#xA0;\n- Plot number of people at each location\n- Plot percentage of women at each location\n- Be able to plot 2 dimensions - both the number of people and the percentage of women\n- Be able to clearly show the gender disparity\n- Be able to use this tool to easy visualize the data for future RHoKs. We want to continue this challenge and hopefully slowly \nincrease the goal percentage as more and more women attend. \n- We would take 1 hour with each tool to see if can reach our metric of success\n
  12. With our goals being to:&amp;#xA0;\n- Plot number of people at each location\n- Plot percentage of women at each location\n- Be able to plot 2 dimensions - both the number of people and the percentage of women\n- Be able to clearly show the gender disparity\n- Be able to use this tool to easy visualize the data for future RHoKs. We want to continue this challenge and hopefully slowly \nincrease the goal percentage as more and more women attend. \n- We would take 1 hour with each tool to see if can reach our metric of success\n
  13. With our goals being to:&amp;#xA0;\n- Plot number of people at each location\n- Plot percentage of women at each location\n- Be able to plot 2 dimensions - both the number of people and the percentage of women\n- Be able to clearly show the gender disparity\n- Be able to use this tool to easy visualize the data for future RHoKs. We want to continue this challenge and hopefully slowly \nincrease the goal percentage as more and more women attend. \n- We would take 1 hour with each tool to see if can reach our metric of success\n
  14. With our goals being to:&amp;#xA0;\n- Plot number of people at each location\n- Plot percentage of women at each location\n- Be able to plot 2 dimensions - both the number of people and the percentage of women\n- Be able to clearly show the gender disparity\n- Be able to use this tool to easy visualize the data for future RHoKs. We want to continue this challenge and hopefully slowly \nincrease the goal percentage as more and more women attend. \n- We would take 1 hour with each tool to see if can reach our metric of success\n
  15. The first tool we started with was openheatmap. \n\n\n
  16. - OpenHeatMap is an opensource project, implemented by Pete Warder.\n - It used the OpenStreetMap tiles to draw maps. \n\n- The service designed to make it easy for non-specialists to create maps for communicating information. (dream tool for us?!)\n- For developers, there is a JQuery plugin that makes it easy to create an open source mapping component on any web page.\n\n - I want to show you a quick demo of us actually using the tool with our aggregated data so you can see how easy it is to use. \n
  17. \n- As you can see the tool is very easy to use. \n- And I like that this map made it very clear which were the high percentage women areas. \nNortheast US and Zambia! AkiraChix - Nairobi\n\n- And so far, it is the dream tool BUT&amp;#xA0;then we realized some limitations:\n- Once you create your heatmap and left the edit window, \nyou can not go back and change the parameters (there is no logging) after its creation\nAlso since we used a csv to upload the data - after uploading, we can&amp;#x2019;t edit the raw data.\n You can create a map directly from data in a google spreadsheet - and your map will then get updates periodically automatically\n\n- As we saw, the generated URL is predefined with some arbitrary name: http://www.openheatmap.com/view.html?map=JamieTriglyceridesMournings\n\n- The solution which gives you more flexibility, is to\n host the heatmap on your site using OpenHeatmap API, however, after couple of hours, \n we tried to use API, but lots of restrictions (need to geocode the data, need to be familiar with OSM) and documentation is really not clear.\n \n - Pete - the author is very responsive to github messages though. \n\n \n
  18. We realized at this point the tools could be broken up into 2 paths: non programmatic and programatic. \nSo we thought we would look at several tools of each type. \n\n
  19. For nonprogramatic we decided to look at: \nopenheatmap - which you just saw\ngoogle fusion tables\ngoogle charts\nsocrata\nchartsbin\nfactual\n\nChartsbin was not a good option because it doesn&amp;#x2019;t allow us to upload our own data. \nFactual - not a good option because doesn&amp;#x2019;t provide a map view of data\n
  20. For nonprogramatic we decided to look at: \nopenheatmap - which you just saw\ngoogle fusion tables\ngoogle charts\nsocrata\nchartsbin\nfactual\n\nChartsbin was not a good option because it doesn&amp;#x2019;t allow us to upload our own data. \nFactual - not a good option because doesn&amp;#x2019;t provide a map view of data\n
  21. For nonprogramatic we decided to look at: \nopenheatmap - which you just saw\ngoogle fusion tables\ngoogle charts\nsocrata\nchartsbin\nfactual\n\nChartsbin was not a good option because it doesn&amp;#x2019;t allow us to upload our own data. \nFactual - not a good option because doesn&amp;#x2019;t provide a map view of data\n
  22. For programmatic - we decided to look at: \ngoogle maps js api\nyahoo maps web services\nbing maps ajax control\ngoogle charts api\n
  23. \n
  24. First - I want to do a demo so you can see how powerful Google Fusion Tables is. \n
  25. Here again is the chart where we are using the aggregated counts to show number of people attending in each country. \n \n
  26. In Google Charts, there is a heatmap gadget you can use to plot data. \nThis is a heatmap of the number of women aggregated by country. You can access this functionality directly from google spreadsheets.\nThere was a little bit of difficulty plotting the data.\n- You need ISO country code and it had to be done manually\n- Aggregation counts also had to be be done manually \n- For non programatic tools for heatmaps - fusion tables is more powerful than google charts\n\n
  27. Socrata is a company working on Open Data Services for Government.\n It provides a platform to help you share data with others. \nUsed by city of Seattle for example, used by data.gov for examples.\n\n\n
  28. They also have a way to upload your own data and visualize them using various Maps API\nIt is less trivial than openheatmap and it seems that socrata&amp;#x2019;s main usecase is to quickly allow visualization of exisiting data on the platform.&amp;#xA0;\n\n- You can choose between Google/Bing and eSRI maps (specialized GIS software).\n- In 3 minutes, we were able to create an account and upload a csv to plot heatmap per country. \n- However you are required to Geocode your points if you&amp;#x2019;re interested in a location other than country or a US state.\n- Slow to render\n- Great way to visualize existing sets, not perfect tool for just a one time use.\n\n
  29. We then moved on to the google maps api\nWe created a maps key to use in our application.\nWe found it pretty quickly that we could easily plot individual markers of data using aggregated data set\n\n\n
  30. - With the Google Maps API it was very easy to take our summary data points \nand plot them on a map and include number of people and % of women in the &amp;#xA0;info window.\n\n\n
  31. Initialize the map\n
  32. Initialize the map\n
  33. Initialize the map\n
  34. Initialize the map\n
  35. Data\nThe locations data was a simple array with the columns being \nlocation, latitude, longitude, number of people, percentage\n
  36. Data\nThe locations data was a simple array with the columns being \nlocation, latitude, longitude, number of people, percentage\n
  37. Plot the map\n
  38. Plot the map\n
  39. Plot the map\n
  40. Plot the map\n
  41. Plot the map\n
  42. Plot the map\n
  43. Google Maps API - add InfoWindow\n
  44. Google Maps API - add InfoWindow\n
  45. Google Maps API - add InfoWindow\n
  46. Google Maps API - add InfoWindow\n
  47. Google Maps API - add InfoWindow\n
  48. Google Maps API - add InfoWindow\n
  49. Then you get this map we looked at before.\n\nThe data points still don&apos;t make it very clear from one view the number and percentage.&amp;#xA0;I can click on a point, \nSo we kept looking and we came upon Marker Clusterer.\n
  50. Marker is an extension to the google maps api written by Frank Wu. \nThis is the plot of the number of women that attended each location using\nthe extension. \n\nIf I know that over 1300 people attended &amp;#xA0;the hacks I can quickly see with this map that women make up a small part of the total attendees.&amp;#xA0;\nLove the graphics, but this chart still doesn&apos;t show me the ratio of men to women, so it&apos;s difficult to grasp the disparity.&amp;#xA0;\n
  51. - To use the marker clusterer - just had to include one file\n- Data had to be one row per person though\n- The marker clusterer would cluster the data for you.&amp;#xA0;\n
  52. - To use the marker clusterer - just had to include one file\n- Data had to be one row per person though\n- The marker clusterer would cluster the data for you.&amp;#xA0;\n
  53. - To use the marker clusterer - just had to include one file\n- Data had to be one row per person though\n- The marker clusterer would cluster the data for you.&amp;#xA0;\n
  54. - To use the marker clusterer - just had to include one file\n- Data had to be one row per person though\n- The marker clusterer would cluster the data for you.&amp;#xA0;\n
  55. - To use the marker clusterer - just had to include one file\n- Data had to be one row per person though\n- The marker clusterer would cluster the data for you.&amp;#xA0;\n
  56. - To use the marker clusterer - just had to include one file\n- Data had to be one row per person though\n- The marker clusterer would cluster the data for you.&amp;#xA0;\n
  57. \n- Marker clusterer\n- No way for tool use different data fields (e.g. male, female, percentages ) to plot different colors or differentiate between data sets.\n
  58. \n- Marker clusterer\n- No way for tool use different data fields (e.g. male, female, percentages ) to plot different colors or differentiate between data sets.\n
  59. And as we saw, this was the result. The clusterer uses both the size of the marker and the color to plot\n\n
  60. One nice feature of the marker clusterer is the drill down capability it provides\nAutomatically clusters based on your zoom level\n
  61. We feel like we&apos;re making some progress, but there is still not clear visualization which shows the number of people who attended vs the percentage of women.&amp;#xA0;\n\nSo we continued exploring.&amp;#xA0;\nWe came across layers in the google maps api and found a layer for fusion table heatmaps.&amp;#xA0;\nWe saw the possibility of integrating our fusion tables with the google maps api using the FusionTablesLayer class\n\nWe thought - oh cool - we can use the fusion tables we already have, and create a heat map with the google maps api and plot markers on top of it.&amp;#xA0;\nThis is an Example Google Maps API with Fusion Table Heatmaps and what it is doing is plotting a single point for each location. \n\n- With our aggregated data\n- Integration of fusion table and google maps API to generate heat map doesn&apos;t fit our use case\n- Possible to do with individual data\n\n- And we were wondering why do the fusion table heatmaps look for different from the heatmap option \nMade use realize that fusion table heat maps were done with Flash.&amp;#xA0;\n\n- It wasn&amp;#x2019;t the same thing like we thought. \n\n\nhttp://code.google.com/apis/maps/documentation/javascript/examples/layer-fusiontables-heatmap.html\n
  62. - Here&apos;s how you do it&amp;#xA0;\n- Valuable if you want to use your data directly from fusion table\n- Fusion table must be public&amp;#xA0;\n- Heatmap option most likely &amp;#xA0;not so valuable with aggregated data\n
  63. - Here&apos;s how you do it&amp;#xA0;\n- Valuable if you want to use your data directly from fusion table\n- Fusion table must be public&amp;#xA0;\n- Heatmap option most likely &amp;#xA0;not so valuable with aggregated data\n
  64. - We then came across the Circle class in the Google Maps API\n- We started with an initial basic map with plots of all the cities\n- We used the same data set that we had in the basic map\n- We first plotted circles where the size was based on attendance\n
  65. Creating circles was easy. \n
  66. Creating circles was easy. \n
  67. \n
  68. \n
  69. circle plot\n- again different sizes based on attendance, but now&amp;#xA0;\n- circle color based on percentage\n- easy to view which places had a lot of people and also to see gauge the relative percentage of women&amp;#xA0;\n
  70. Add back in call to setMarkers and InfoWindow.&amp;#xA0;\n- setMarkers is where the event listener is added to each marker.&amp;#xA0;\n
  71. Add back in call to setMarkers and InfoWindow.&amp;#xA0;\n- setMarkers is where the event listener is added to each marker.&amp;#xA0;\n
  72. circle plot\ncircles automatically scale to your zoom level\n
  73. \n
  74. This is the first map we created with the Yahoo Maps API.\nWe had explored the Google Maps API extensively and we wanted to see what Yahoo and Bing had to offer. \nIt turns out that the APIs are very similar in structure to each other. The function names are different, but the structure is the same. \nCreate a map, plot the markers, add event listeners for the click to get the info windows. \nOne thing I didn&amp;#x2019;t like about the Yahoo! Maps was the default marker, so I went ahead and used the same icon that the google maps api provides by default.\n\n\n
  75. \n
  76. Create new icon, set the source, and size, and make sure you pass the icon to the marker \nand voila - \n
  77. Create new icon, set the source, and size, and make sure you pass the icon to the marker \nand voila - \n
  78. your map uses your custom icon.\nWhen we looked at the Bing Maps AJAX Control - it turns out that their API is also very similar in structure. \n\n
  79. StreetView\n\n- One advantage that google maps does have is the streetview.&amp;#xA0;\n\n- Streetview is available by default when you create a map using the Google Maps API\n\n- This might be useful in the next RHoK (coming up in June 2nd, 3rd) to use before the event so people can find the location of the hacks.&amp;#xA0;\n
  80. The Google Charts Tools \nYou can use the Google Charts Tools / Visualization API to embed an interactive chart, graph, or other graphic onto your web page. Visualizations are interactive, and also expose events, such as user mouse clicks, that enable you to write code to create great effects on your page&amp;#x2014;for example, to combine a map and a table that stay in sync when clicked.\n\nYou can embed a visualization either using JavaScript, or as an embedded gadget (some visualizations are provided as both).\n\nhttp://code.google.com/apis/visualization/documentation/\n
  81. If you use JS, there are still the same limitations we encountered when building the gadged. You need ISO country code and it had to be done manually and Aggregation counts also had to be be done manually. Can&amp;#x2019;t plot cities.\nBut Google Charts are a great way to plot multiple charts synchronized with each other on the same page. It also offers a large variety of \nvisualization options - table, bar, line, and some interesting custom ones - I saw a speedometer in their example. They are constantly improving it also so it&amp;#x2019;s\ndefinitely something to look at. \n
  82. In conclusion - if we take a look at all the tools together and their capabilities.\n\n- 2D visualization\ngoogle maps API\n\n- No Coding required\n- Legend?\n- First Map (Easy | Moderate | Hard)\n- Full control\n- Data points (individual, aggregate)\n\n- When you&amp;#x2019;re exploring - the non programmatic tools such as google fusion tables might be what you want.\n- When you know what you want - google maps api, yahoo maps web services, google charts api - something that gives you more control\n\nNotes/ Special Features\nScaling\nClustering based on zoom level\nFusion Tables\nCountries vs. Regions\nMap not zoomable\n\n
  83. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  84. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  85. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  86. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  87. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  88. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  89. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  90. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  91. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  92. Some more conclusions: \n \n - Very easy to plot flat numbers with most tools\n - Plotting&amp;#xA0;multiple sets of data without code is not trivial\n - Flash graphics still ahead of JS graphics with respect to data visualization\n - Most map and charting tools need better overall legend support\n - Almost all tools provide an easy way to have individual data point information windows, but support for overall legend is missing\n - We&apos;ve uncovered just the tip of the iceberg in terms of data visualization\n - A lot of tools out there\n - Our visualized data showed us that the more the people that attended the event, the more likely we were to meet the 20% challenge\n - exception: Argentina - 120 people, only 9% women\n - We need to improve and automate our data collection process as much as possible\n - Accurate registration via eventbrite\n - Import dataset with gender and location directly from eventbrite\n - Even though we hit &gt;= 20% in 8 (1/3) locations, we&apos;re not sure in what manner people participated in.&amp;#xA0;\n - Our goal is to get 20% women hackers, so we should also make sure to collect what role people are playing at RHoK\n - We need more women&amp;#xA0;hackers\n - When women do participate, they win!\n\n\n\n
  93. Questions?\n
  94. Please come participate!\n
  95. Contact us with any questions.&amp;#xA0;\n
  96. \n
  97. \n